package com.gonsin.gnews.annotations.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.gonsin.gnews.annotations.GNewsSender;
import com.gonsin.gnews.annotations.IBaseSender;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import springfox.documentation.annotations.ApiIgnore;

/**
 * 发送器描述
 */
@Data
public class GNewsSenderDescriber {

    /**
     * 该消息是否带标题
     * 设置【supportTitle】之后，前端设置版面就会显示标题一览
     */
    @ApiModelProperty("该消息是否带标题")
    private boolean supportTitle;

    /**
     * 该消息是否支持点击跳转
     * 设置【supportLink】之后，前端设置版面就会显示链接一览
     */
    @ApiModelProperty("该消息是否支持点击跳转")
    private boolean supportLink;

    /**
     * 该消息是否为多行
     * 设置【supportRows】之后，前端设置版面就会多行显示发送内容，模板内容会在templateBean.rows形式显示在代码中。
     */
    @ApiModelProperty("该消息是否为多行")
    private boolean supportRows;

    /**
     * 该消息是否支持文本内容
     * 设置【supportContent】之后，前端设置版面就会文本形式显示发送内容
     */
    @ApiModelProperty("该消息是否支持文本内容")
    private boolean supportContent;

    /**
     * 该消息是否为第三方的模板id
     * 设置【supportTemplateCode】之后，前端设置版面就会显示第三方模板id一项
     */
    @ApiModelProperty("该消息是否为第三方的模板id")
    private boolean supportTemplateCode;

    /**
     * 发送器所属平台，例如dingtalk
     */
    @ApiModelProperty("发送器所属平台，例如dingtalk")
    private String platform;

    /**
     * 发送器所属平台的名字，用于显示在前端，例如 钉钉
     */
    @ApiModelProperty("发送器所属平台的名字，用于显示在前端，例如 钉钉")
    private String platformName;

    /**
     * 排序位置
     */
    @ApiModelProperty("排序位置")
    private int order;

    /**
     * 发送器的实例
     */
    @JsonIgnore
    @ApiModelProperty(hidden = true)
    private transient IBaseSender sender;


    public GNewsSenderDescriber(){

    }

    public GNewsSenderDescriber(GNewsSender sender){
        this.order = sender.order();
        this.supportContent = sender.supportContent();
        this.supportLink = sender.supportLink();
        this.supportRows = sender.supportRows();
        this.supportTitle = sender.supportTitle();
        this.supportTemplateCode = sender.supportTemplateCode();
        this.platform = sender.platform();
        this.platformName = sender.platformName();
    }

    public GNewsSenderDescriber(GNewsSenderDescriber sender){
        this.order = sender.order;
        this.supportContent = sender.supportContent;
        this.supportLink = sender.supportLink;
        this.supportRows = sender.supportRows;
        this.supportTitle = sender.supportTitle;
        this.supportTemplateCode = sender.supportTemplateCode;
        this.platform = sender.platform;
        this.platformName = sender.platformName;
    }

}
